<?php 
if (isset($_FILES['tabulato_elise']) && isset($_FILES['tabulato_vecchia'])) {
	$start = microtime();
	//print_r($_FILES);
	if ( (strlen($_FILES['tabulato_elise']['name']) > 0 ) && ( file_exists($_FILES['tabulato_elise']['tmp_name']) ) ) {
		echo 'trovato tabulato elise ' . $_FILES['tabulato_elise']['name'] . '<br />';
		$elise_microtime_start = microtime();
		$codiciProdotto = array('CHCOP', 'CHCAS', 'CHORD', 'MTCOP', 'MTORD', 'MTCAS', 'PERSO', 'TRM  ');
		$voci = array();
		$i = 0;
		
		$linee = file($_FILES['tabulato_elise']['tmp_name']);
		foreach ($linee AS $line => $lineaTabulato){
			if (in_array(substr($lineaTabulato, 0, 5), $codiciProdotto) ){
				$i++;
				//print $lineaTabulato;
				//CHCOP/BTMFIS    COOPERATIVE BT              5  Eur         7.487,86        7.425,20           45,66           17,00          167,42 
				//list($voci[$i]['prodotto'], $voci[$i]['convenzione'], $voci[$i]['descrizione'], $voci[$i]['poscnt'], $voci[$i]['rata'], $voci[$i]['capitale'], $voci[$i]['interessi'], $voci[$i]['spese'], $voci[$i]['mora']) = sscanf($lineaTabulato, "%5s/%10[ -~]%25[ -~]%d Eur %17F %16f %16f %16f %16f");
				// $voci[$i] = preg_replace("/(\s){2,}/", ";", $lineaTabulato);
				// print $voci[$i] . "\n";
				$voci[$i]['linea'] = $line + 1;
				$voci[$i]['prodotto'] = substr($lineaTabulato, 0, 5);
				$voci[$i]['convenzione'] = rtrim(substr($lineaTabulato, 6, 10));
				$voci[$i]['descrizione'] = rtrim(substr($lineaTabulato, 16, 25));
				$voci[$i]['poscnt'] = trim(substr($lineaTabulato, 41, 4)) * 1;
				$voci[$i]['rata'] = tabulati2flloat(substr($lineaTabulato, 51, 16));
				$voci[$i]['capitale'] = tabulati2flloat(substr($lineaTabulato, 68, 15));
				$voci[$i]['interessi'] = tabulati2flloat(substr($lineaTabulato, 84, 15));
				$voci[$i]['spesa'] = tabulati2flloat(substr($lineaTabulato, 100, 15));
				$voci[$i]['mora'] = tabulati2flloat(substr($lineaTabulato, 116, 15));
			}
		}
		// echo '<pre>';
		// var_dump($voci);
		// echo '</pre>';
		//html_show_array($voci);
		
		$raggruppamenti = array('MTORD' => 'ipotecari', 'MTCAS' => 'ipotecari', 'MTCOP' => 'ipotecari', 'TRM  ' => 'ipotecari',
								'CHORD' => 'chiro');
		
		foreach ($voci AS $voce) {
			if (isset($raggruppamenti[$voce['prodotto']])) {
				$raggruppamento[$raggruppamenti[$voce['prodotto']]]['capitale'] += $voce['capitale'];
				$raggruppamento[$raggruppamenti[$voce['prodotto']]]['interessi'] += $voce['interessi'];
				$raggruppamento[$raggruppamenti[$voce['prodotto']]]['mora'] += $voce['mora'];
				$raggruppamento[$raggruppamenti[$voce['prodotto']]]['interessi+mora'] += $voce['interessi'] + $voce['mora'];
			}
			//perso bt
			else if ( ($voce['prodotto'] == 'PERSO') && ( strpos($voce['convenzione'], 'BT') ) ) {
				$raggruppamento['persobt']['capitale'] += $voce['capitale'];
				$raggruppamento['persobt']['interessi'] += $voce['interessi'];
				$raggruppamento['persobt']['mora'] += $voce['mora'];
				$raggruppamento['persobt']['interessi+mora'] += $voce['interessi'] + $voce['mora'];
			}
			else if ( ($voce['prodotto'] == 'PERSO') && ( strpos($voce['convenzione'], 'MT') ) ) {
				$raggruppamento['persomt']['capitale'] += $voce['capitale'];
				$raggruppamento['persomt']['interessi'] += $voce['interessi'];
				$raggruppamento['persomt']['mora'] += $voce['mora'];
				$raggruppamento['persomt']['interessi+mora'] += $voce['interessi'] + $voce['mora'];
			}
		}
		html_show_array($raggruppamento);
		
		echo 'Elaborazione Tabulato Elise: ' . number_format(diff_microtime($elise_microtime_start, microtime()), 4). ' secondi<br /><br />';
	}
	if ( (strlen($_FILES['tabulato_vecchia']['name']) > 0 ) && ( file_exists($_FILES['tabulato_vecchia']['tmp_name']) ) ) {
		$vecchia_microtime_start = microtime();
		echo 'trovato tabulato vecchia procedura ' . $_FILES['tabulato_vecchia']['name'] . '<br />';
		//print_r($_FILES);
		$categorieProdotto = array(32, 52, 53, 54, 63, 95, //ipotecari
									44, 55, 64, 80, 86, 88); //chiro
		$voci = array();
		$i = 0;
		
		$linee = file($_FILES['tabulato_vecchia']['tmp_name']);
		// echo '<pre>';
		// var_dump($linee);
		// echo '</pre>';
		foreach ($linee AS $line => $lineaTabulato){
			if (in_array(substr($lineaTabulato, 2, 2), $categorieProdotto) ){
				//print $lineaTabulato . '<br>';
				$i++;
				//print $lineaTabulato;
				//CHCOP/BTMFIS    COOPERATIVE BT              5  Eur         7.487,86        7.425,20           45,66           17,00          167,42 
				//list($voci[$i]['prodotto'], $voci[$i]['convenzione'], $voci[$i]['descrizione'], $voci[$i]['poscnt'], $voci[$i]['rata'], $voci[$i]['capitale'], $voci[$i]['interessi'], $voci[$i]['spese'], $voci[$i]['mora']) = sscanf($lineaTabulato, "%5s/%10[ -~]%25[ -~]%d Eur %17F %16f %16f %16f %16f");
				// $voci[$i] = preg_replace("/(\s){2,}/", ";", $lineaTabulato);
				// print $voci[$i] . "\n";
				$voci[$i]['linea'] = $line + 1;
				$voci[$i]['categoria'] = substr($lineaTabulato, 2, 2);
				$voci[$i]['prodotto'] = rtrim(substr($lineaTabulato, 6, 22));
				$voci[$i]['rata'] = 0;
				$voci[$i]['capitale'] = tabulati2flloat(substr($lineaTabulato, 74, 15));
				$voci[$i]['interessi'] = tabulati2flloat(substr($lineaTabulato, 90, 15));
				$voci[$i]['interessi_cont'] = tabulati2flloat(substr($lineaTabulato, 106, 15));
				$voci[$i]['mora'] = tabulati2flloat(substr($lineaTabulato, 122, 11));
				//echo $voci[$i]['mora'] . '<br />';
			}
		}
		// echo '<pre>';
		// var_dump($voci);
		// echo '</pre>';
		//html_show_array($voci);
		
		$raggruppamenti = array(32 => 'ipotecari', 52 => 'ipotecari', 53 => 'ipotecari', 54 => 'ipotecari', 63 => 'ipotecari', 95 => 'ipotecari',
								44 => 'chiro', 55 => 'chiro', 64 => 'chiro', 80 => 'chiro', 86 => 'chiro', 88 => 'chiro',);
		$raggruppamento = array(); //reset
		foreach ($voci AS $voce) {
			if (isset($raggruppamenti[$voce['categoria']])) {
				$raggruppamento[$raggruppamenti[$voce['categoria']]]['capitale'] += $voce['capitale'];
				//$raggruppamento[$raggruppamenti[$voce['categoria']]]['interessi'] += $voce['interessi'];
				$raggruppamento[$raggruppamenti[$voce['categoria']]]['interessi_cont'] += $voce['interessi_cont'];
				$raggruppamento[$raggruppamenti[$voce['categoria']]]['mora'] += $voce['mora'];
				$raggruppamento[$raggruppamenti[$voce['categoria']]]['interessi+mora'] += $voce['interessi_cont'] + $voce['mora'];
			}
		}
		html_show_array($raggruppamento);
		
		echo 'Elaborazione Tabulato Vecchia: ' . number_format(diff_microtime($vecchia_microtime_start, microtime()), 4). ' secondi<br /><br />';
	}	
	
	echo 'Elaborazione Totale: ' . number_format(diff_microtime($start, microtime()), 4). ' secondi<br /><br />';
}
else {
?>
<form action="" method="post" enctype="multipart/form-data">
	<p>Tabulato Elise:
	<input type="file" name="tabulato_elise" size="70" />
	<br />
	Tabulato Vecchia:
	<input type="file" name="tabulato_vecchia" size="70" />
	<input type="submit" />
		</p>
</form>
<?php
}

function tabulati2flloat ($campo) {
	
	$originali = array('.', ',');
	$sostituzioni = array('', '.');
	
	return (float) trim(str_replace($originali, $sostituzioni, $campo));
	
}

function do_offset($level){
    $offset = "";             // offset for subarry 
    for ($i=1; $i<$level;$i++){
    $offset = $offset . "<td></td>";
    }
    return $offset;
}

function show_array($array, $level, $sub){
    if (is_array($array) == 1){          // check if input is an array
       foreach($array as $key_val => $value) {
			if (is_float($value))
				$value = number_format($value, 2, ',', '.');
           $offset = "";
           if (is_array($value) == 1){   // array is multidimensional
           echo "<tr>";
           $offset = do_offset($level);
           echo $offset . "<td>" . $key_val . "</td>";
           show_array($value, $level+1, 1);
           }
           else{                        // (sub)array is not multidim
           if ($sub != 1){          // first entry for subarray
               echo "<tr nosub>";
               $offset = do_offset($level);
           }
           $sub = 0;
           echo $offset . "<td main ".$sub." width=\"120\">" . $key_val . 
               "</td><td width=\"120\">" . $value . "</td>"; 
           echo "</tr>\n";
           }
       } //foreach $array
    }  
    else{ // argument $array is not an array
        return;
    }
}

function html_show_array($array){
  echo "<table cellspacing=\"0\" border=\"2\">\n";
  show_array($array, 1, 0);
  echo "</table>\n";
}

function diff_microtime($mt_old,$mt_new) {
  list($old_usec, $old_sec) = explode(' ',$mt_old);
  list($new_usec, $new_sec) = explode(' ',$mt_new);
  $old_mt = ((float)$old_usec + (float)$old_sec);
  $new_mt = ((float)$new_usec + (float)$new_sec);
  return $new_mt - $old_mt;
}


?>